gtk/modelbutton: Handle unpaired releases
authorCarlos Garnacho <carlosg@gnome.org>
Fri, 11 Dec 2020 15:59:07 +0000 (16:59 +0100)
committerCarlos Garnacho <carlosg@gnome.org>
Sat, 12 Dec 2020 00:42:42 +0000 (01:42 +0100)
Let model buttons handle unpaired releases, these may happen indirectly
e.g. due to other child menus being opened at the time. Clicking would
dismiss the menu, but the menu item beneath the pointer would not get
activated.

We can handle that button release though via ::unpaired-release, so
there's no second click required.

Fixes: https://gitlab.gnome.org/GNOME/gtk/-/issues/3463
gtk/gtkmodelbutton.c

index 6c6be9a1237acefd46754807e8411f3e7f7269ea..b644a7fe6137599b26255c8bb56a70230b21ca72 100644 (file)
@@ -1493,6 +1493,7 @@ gtk_model_button_init (GtkModelButton *self)
   gtk_gesture_single_set_button (GTK_GESTURE_SINGLE (gesture), GDK_BUTTON_PRIMARY);
   g_signal_connect (gesture, "pressed", G_CALLBACK (gesture_pressed), self);
   g_signal_connect_swapped (gesture, "released", G_CALLBACK (emit_clicked), self);
+  g_signal_connect_swapped (gesture, "unpaired-release", G_CALLBACK (emit_clicked), self);
   gtk_event_controller_set_propagation_phase (GTK_EVENT_CONTROLLER (gesture), GTK_PHASE_CAPTURE);
   gtk_widget_add_controller (GTK_WIDGET (self), GTK_EVENT_CONTROLLER (gesture));
 }